#ifndef FACTORY_H
#define FACTORY_H
#include <QObject>

class Product;
class QString;
class Factory: public QObject
{
    Q_OBJECT
public:
    virtual ~Factory() = 0;
    virtual Product* createProduct(QString type) = 0;
protected:
    Factory();
};

class ConcreteFactory: public Factory
{
    Q_OBJECT
public:
    ~ConcreteFactory();
    ConcreteFactory();

public slots:
    Product* createProduct(QString type);
};

#endif // FACTORY_H
